package org.japo.java.basics.main;

import java.util.Scanner;

public class FechaUsuario {

    public static void main(String[] args) {
        // Mecanismo de introducción de datos
        Scanner scn = new Scanner(System.in);

        // Introducción de datos
        try {
            // Leer hora
            System.out.print("Dia ........: ");
            int d = scn.nextInt();
            scn.nextLine();

            // Leer minutos
            System.out.print("Mes ........: ");
            int m = scn.nextInt();
            scn.nextLine();

            // Leer segundos
            System.out.print("Año ........: ");
            int a = scn.nextInt();
            scn.nextLine();

            // Semaforo mes 31 dias
            boolean mes31 =
                    m == 1 || m == 3 || m == 5 ||
                    m == 7 || m == 8 || m == 10 ||
                    m == 12;

            // Semaforo mes 30 dias
            boolean mes30 = m == 4 || m == 6 || m == 9 || m == 12;

            // Semaforo año bisiesto
            boolean bisOK = a % 400 == 0 || a % 100 != 0 && a % 4 == 0;

            // Semaforo mes 29 dias
            boolean mes29 = m == 2 && bisOK;

            // Semaforo mes 28 dias
            boolean mes28 = m == 2 && !bisOK;

            // Semaforo rango 31 dias
            boolean rango31 = d >= 1 && d <= 31;

            // Semaforo rango 30 dias
            boolean rango30 = d >= 1 && d <= 30;

            // Semaforo rango 29 dias
            boolean rango29 = d >= 1 && d <= 29;

            // Semaforo rango 28 dias
            boolean rango28 = d >= 1 && d <= 28;

            // Validar fecha
            boolean fechaOK =
                    mes31 && rango31 ||
                    mes30 && rango30 ||
                    mes29 && rango29 ||
                    mes28 && rango28;

            // Mostrar resultados
            String mensaje = fechaOK ? "SI correcta" : "NO correcta";
            System.out.printf("%02d/%02d/%d - Fecha %s\n", d, m, a, mensaje);
        } catch (Exception e) {
            System.out.println("Error en la introducción de datos");
            System.out.println(e);
            scn.nextLine();
        }
    }
}
